System and method for hierarchically invoking re-entrant methods on XML objects

ABSTRACT

A system and method for hierarchically invoking reentrant methods on XML objects includes a first store for storing XML objects as an input tree; a second store for storing a resultant tree; a processor for processing the input tree to generate the resultant tree; action attribute indicia representing an API to be invoked associated with at least one object; the processor executing a depth first search through the input tree for generating the resultant tree selectively including action status child nodes for XML objects having an action attribute and new script generated from processing selective action attributes; while generating the resultant tree, the processor removing the action attribute from XML action objects successfully processed; and a reentrant processing path through the processor for processing the resultant tree as a new input tree responsive to the resultant tree including said new script or failure status child nodes.

CROSS REFERENCES TO RELATED APPLICATIONS

[0001] Copending U.S. patent applications

[0002] Ser. No. 10/334,269 filed Dec. 31, 2002 entitled “SYSTEM ANDMETHOD FOR THE AGGREGATION OF PLACE INFORMATION IN A MULTI-SERVERSYSTEM”;

[0003] Ser. No. 10/334,261, filed Dec. 31, 2002 entitled “SYSTEM ANDMETHOD FOR AGGREGATING USER PROJECT INFORMATION IN A MULTI-SERVERSYSTEM”;

[0004] Ser. No. 10/334,296, filed Dec. 31, 2002, entitled “SYSTEM ANDMETHOD FOR CENTRAL REFRESH OF PLACE OBJECTS”, assignee docketLOT920020061US1;

[0005] Ser. No. 10/334,268, filed Dec. 31, 2002, entitled “SYSTEM ANDMETHOD FOR SEARCHING A PLURALITY OF DATABASES DISTRIBUTED ACROSS A MULTISERVER DOMAIN”, assignee docket LOT920020064US1;

[0006] Ser. No. 09/752,120, filed 29 Dec. 2000, entitled “METHOD ANDSYSTEM FOR CREATING A THEME OF A PLACE TO BE USED AS A TEMPLATE FOROTHER PLACES”;

[0007] Assignee Docket LOT920020032US1 Ser. No. 10/______, entitled“SYSTEM AND METHOD FOR COMMAND LINE ADMINISTRATION OF PROJECT SPACESUSING XML OBJECTS”;

[0008] Assignee Docket LOT920020068US1 Ser. No. 10/______, entitled“SYSTEM AND METHOD FOR INTEGRATING PROJECTS EVENTS WITH PERSONALCALENDAR AND SCHEDULING CLIENTS”;

[0009] Assignee Docket LOT920030001US1 Ser. No. 10/______, entitled“SYSTEM AND METHOD FOR INTEGRATING ONLINE MEETING MATERIALS IN A PLACE”;

[0010] are assigned to the same assignee hereof and contain subjectmatter related, in certain respect, to the subject matter of the presentapplication. The above identified patent applications are incorporatedherein by reference.

TECHNICAL FIELD OF THE INVENTION

[0011] This invention relates to design of application programinterfaces (APIs). More specifically, to APIs centered on an XML datamodel. XML representations of data objects are the mechanisms to invokethe APIs.

BACKGROUND ART

[0012] An application programming interface (API) consists of thefunctions and variables that programmers are allowed to use in theirapplications. For example, the Java API consists of all public andprotected methods of all public classes in the java.applet (classes forimplementing applets), java.awt (classes for graphics, text, windows,and graphical user interfaces), java.awt.image (classes for imageprocessing), java.awt.peer (interfaces for plateform-independentgraphical user inteface toolkit), java.io (classes for input andoutput), java.lang (classes for the core language), java.net (classesfor networking), and java.util packages (classes for useful data types).

[0013] Traditional APIs require programming knowledge, tend to be finegrained, and generally are not developed with reentrant properties.There is a need in the art for a much simpler API model.

[0014] The Extensible Markup Language (XML) is a W3C-endorsed standardfor document markup. It defines a generic syntax used to mark up datawith simple, human-readable tags and provides a standard format forcomputer documents which may be customized for domains such as websites, electronic data interchange, and so forth. XML is a meta-markuplanguage for text documents, and XML documents are trees. Data isincluded in XML documents as strings of text, and the data aresurrounded by text markup that describes the text. A particular unit ofdata and markup is called an element. As a meta-markup language, XMLdoes not have a fixed set of tags and elements, and elements may bedefined as needed.

[0015] In XML there are several kinds of nodes, including the root node,element nodes, attribute nodes, text nodes, comment nodes, processinginstruction nodes, and namespace nodes. For each type of node, there isan XSLT default built-in template rule that specifies what to do withthat node if a stylesheet author has not provided more specificinstructions. For example, a basic template rule copies the value oftext and attribute nodes into an output document. (See Elliotte RustyHarold & W. Scott Means. XML in a Nutshell. Sebastopol, Calif.: O'Reillyand Associates, 2001).

[0016] SOAP is a mechanism for remotely invoking instructions, ormethods, through XML. However, SOAP does not use an object model as thedriving representation of the methods, but has a complex XMLrepresentation that does not possess certain desirable reentrantcharacteristics.

[0017] Domino, IBM, the IBM Logo, Lotus, Notes, QuickPlace aretrademarks of International Business Machines in the United States,other countries, or both.

OBJECTS AND SUMMARY OF THE INVENTION

[0018] It is an object of the invention to provide an improved andsimpler programmatic interface.

[0019] There is provided a method for hierarchically invoking reentrantmethods on objects by associating with each object an action attributerepresenting an API to be invoked; processing the object to return anupdated form of the object selectively including an action executed onthe object; for said actions executed on the object, creating a childnode with action status representing whether said action was successful;and on action success, removing the action attribute from the updatedform.

[0020] There is further provided a method for hierarchically invokingreentrant methods on XML objects in a document, by traversing an XMLinput tree in sequential order as objects appear in the document; upontraversing in the input tree a target object with an action attribute,adding an action result object to the tree as a child object; if anerror is encountered in processing the action attribute in a targetobject during traversal, retaining the action attribute in the targetobject and processing a next sibling object in sequential order withoutprocessing any children objects of the target object; and if an actionattribute in a target object is successfully processed during traversal,removing the action attribute from the target object and processing anext object in sequential order.

[0021] There is further provided a system for hierarchically invokingreentrant methods on XML objects, including a first store for storingXML objects as an input tree; a second store for storing a resultanttree; a processor for processing the input tree to generate theresultant tree; action attribute indicia representing an API to beinvoked associated with at least one object; the processor executing adepth first search through the input tree for generating the resultanttree selectively including action status child nodes for XML objectshaving an action attribute and new script generated from processingselective action attributes; while generating the resultant tree, theprocessor removing the action attribute from XML action objectssuccessfully processed; and a reentrant processing path through theprocessor for processing the resultant tree as a new input treeresponsive to the resultant tree including said new script or failurestatus child nodes.

[0022] In accordance with an aspect of the invention, there is provideda computer program product configured to be operable for hierarchicallyinvoking reentrant methods on XML objects.

[0023] Other features and advantages of this invention will becomeapparent from the following detailed description of the presentlypreferred embodiment of the invention, taken in conjunction with theaccompanying drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

[0024]FIG. 1 is a system diagram illustrating an exemplary multi-serverenvironment.

[0025]FIG. 2 is a flow chart representing generation of an outputdocument, or resultant tree, in accordance with the preferred embodimentof the invention.

[0026]FIG. 3 is a flow chart representation of the preferred embodimentof the method of the invention.

[0027]FIG. 4 is a diagrammatic representation of an exemplary input treeshown in FIG. 2.

[0028]FIG. 5 is a diagrammatic representation of an output treegenerated from the input tree of FIG. 4.

[0029]FIG. 6 is a diagrammatic representation of an output treegenerated through the reentrant loop of FIG. 2.

[0030]FIG. 7 is a flow chart representation of an exemplary embodimentfor building the XML API engine of FIG. 2.

[0031]FIG. 8 is a diagrammatic representation of the object model of anexemplary embodiment of the system of the invention.

BEST MODE FOR CARRYING OUT THE INVENTION

[0032] In accordance with an exemplary embodiment of the invention,design of application program interfaces (APIs) is centered on an XMLdata model. XML representations of IBM® Lotus® QuickPlace® objects isthe mechanism to invoke the APIs. This provides a much simpler APImodel, one that is driven by XML representations of the objectsthemselves. The XML representation defines the resultant state theprogrammer wishes the system to achieve. Only knowledge of XML, which isa much simpler medium to create and easily transport across systems,mediums and programs, is needed to invoke a method or group of methods.

[0033] Referring to FIG. 1 catalog 120 is a database, such as aQuickPlace catalog, for aggregating information about projects, such asQuickPlaces 114, 132, 134, 136, in a multi-server system environment,including service 100/server 101, 122/123, 124/125, and 126/127.

[0034] Throughout this specification, the generic term “project” andmore specific terms “place” or “QuickPlace” are used substantiallyinterchangeably. Place and QuickPlace are examples of projects.

[0035] Referring to FIG. 2, XML 70 input 86 to and XML 72 output 87 fromthe APIs perform multiple actions in one call. Input data 86 for allAPIs are the same. That is, the same object representation is usedacross all APIs. As is represented by line 89, input and output of anAPI call can be the input to another, and error and status indicationsare returned and maintained for each action. Reentrant path 89 providesfor processing output document 72 through engine 76 if an error is foundin input 86 or if new script is generated in output 87. In the latercase, engine 76 is used to generate new programs 72 out of inputprograms 70. The methods are extensible to add support for new actions,support for multiple servers, and support for the ability to impersonatea person. Resultant tree 72 can be reinvoked, as is represented byreentrant path 89, selectively to generate new trees with or withoutaction and, if there were errors, to rerun. During the rerun, engine 76will start where it left off and process only those nodes that failed,and children of those nodes.

[0036] XML is created to represent, for example, a QuickPlace object.Each API capable object has an action attribute associated with it. Thisaction attribute represents the API to be invoked. The XML 70 is passed86 into a Java method 76, which then processes the XML and returns 87 anupdated form 72 of the input XML 70. Upon completion, XML 72 similar tothe input XML 70 is returned. Table 1 shows an example input document70. TABLE 21 EXAMPLE INPUT DOCUMENT (TREE 70) 1 <service><servers> 2   <server local = “true” 3    <places> 4       <place action = “lock”>5          <name>haikuteam</name> 6       </place> 7    </places> 8   </server> 9 </servers></service>

[0037] The XML of Table 1 is used to lock the place haikuteam on thelocal server. After the lock API is invoked the XML of Table 2 isreturned. TABLE 22 EXAMPLE OUTPUT DOCUMENT (RESULTANT TREE 72) 1<service><servers> 2    <server local = “true”> 3    <places> 4      <place> 5          <name>haikuteam</name> 6         <action_result action = “create”> 7            <status>0</status> 8          </action_result> 9      </place> 10    </places> 11    </server> 12 </servers></service>

[0038] When an action is executed on a QuickPlace object, a child nodeis created with the action status. This status represents if the actionwas successful through the returned status code in the action_resultnode.

[0039] To run the XML API as a person, a separate piece of XML is passedinto the API. This XML identifies a given person's identity. The defaultperson is the local server. An example of a session is provided in Table3. TABLE 23 EXAMPLE SESSION RUNNING XML API AS A PERSON 1 <session> 2   <person> 3       <dn>CN=Sami Shalabi, OU=Westford, O=IBM</dn> 4   </person> 5 </session>

[0040] If API 76 uses this session XML (Table 3), the actions areinvoked using the identifier

[0041] “CN=Sami Shalabi,OU=Westford,O=IBM”.

[0042] Referring to FIG. 3, the method for processing an input document70 through the XML API engine 76 are as follows.

[0043] In step 430, XML API engine 76 runs on content 70, 114 within aserver 101 that has local=“true” OR where the server hostname matchesthe server used by the person, for example:

[0044] <server><hostname>corn.iris.com</hostname> . . . </server>

[0045] In step 432, XML 86, 89 is processed (or, the tree is traversed)in the order it appears in the document 70, 72.

[0046] In step 436, if an error is encountered during traversal (step434), the traversal will move to the next sibling and will not processany children. This will be more fully described hereafter in connectionwith FIG. 5.

[0047] In step 438, on action success (step 434), the action attributeis removed from the node being processed. On action error the actionattribute will not be removed.

[0048] In step 440, when an action is processed, an action_result isalways added as a child to the node being processed.

[0049] Referring to FIG. 4, an object tree is illustrated includingserver object 20 and place objects 22, 24, 26, 28 as children of serverobject 20. Place object 22 has child objects 30, 50, and 54 withactions, and child object 52 without action. Action object 56 is a childof object 54. Action object 30 a parent in the example tree includingobjects 32, 34, 36, 38, 40, 42, 44, and 46, as illustrated. Actionobjects represent methods to be invoked. A depth first search throughthe tree at place 22 (which is equivalent to processing XML statementsin the order in which they appear in an input file) processes statementsin the order 30, 32, 34, 36, 38, 40, 42, 44, 46, 50, 52, 54, and 56.

[0050] Referring to FIG. 5, a depth first search which encounters errorsthrough the object tree of FIG. 4 beginning with place object 22 isillustrated.

[0051] First, an error is encountered in action object 30, which resultsin the action not being removed from object 30 and an error statusobject 60 being added as a child to object 30. Due to the error,children objects 32, 34, 36, 38, 40, 42, 44, and 46 are not processed,effectively placing action objects 42 and 34 on hold.

[0052] Next, action object 50 is successfully processed. When an actionobject is processed successfully, the action is removed from the objectand a success status object 62 is added as a child of action object 50.

[0053] Next, object 52 is processed.

[0054] Next, action object 54 is successfully processed, resulting insuccess status object 64 being added as a child to action 54.

[0055] Finally, action object 56 is processed successfully and successstatus object 66 added to it as a child.

[0056] Thus, the entire tree, except for the children of nodes witherrors, are processed on first pass. The errors must then be fixed by anadministrator, who then restarts the process which continues from whereit left off in a second pass. The second pass processes the children ofnodes which were identified as having errors during the first passwithout processing in this second pass nodes previously processedsuccessfully.

[0057] Referring to FIG. 6 in connection with FIG. 2, an example inputtree 70 includes parent node 80 and child nodes 82 and 84, node 82representing an action node. As is represented by line 86, is this isfed to XML API engine 76 which generates an output tree 72, firstvisiting action node 82 which results in the addition of a sub-treeincluding success status node 90 and action objects 92, 94, 96, and 98.Thereafter, output tree 72 is fed back, as is represented by line 89, toXML API engine 76 and processed to create a new output document(resultant tree) 74 by processing in order objects 82, 90, 92, 94, 96,98 and 84.

[0058] In accordance with the exemplary embodiment based on a QuickPlaceenvironment, all object representations adhere to the QuickPlace ObjectDTD of Table 4. TABLE 1 DOCUMENT TYPE DEFINITION (DTD) 1 <?xmlversion=“1.0” encoding=“UTF-8”?> 2 <!ELEMENT service (servers?)*> 3<!ELEMENT servers (server*)*> 4 <!ELEMENT server (name? | hostname? |port? | protocol? | 5 path_prefix? | placetypes? | places?)*> 6<!ATTLIST server 7   id ID #IMPLIED 8   local (false | true) #IMPLIED 9  action CDATA #IMPLIED 10 > 11 <!ELEMENT placetypes (placetype*)*> 12<!ELEMENT placetype (((name? | description? | 13additional_information_url?)* | link))> 14 <!ATTLIST placetype 15   idID #IMPLIED 16   action CDATA #IMPLIED 17 > 18 <!ELEMENT places(place*)*> 19 <!ELEMENT place (name? | placetype? | title? | members? |20 rooms? | archive_directory? | lock_message? | last_accessed? | 21last_modified? | size? | meta_data?)*> 22 <!ATTLIST place 23   id ID#IMPLIED 24   locked (false | true) #IMPLIED 25   action CDATA #IMPLIED26 > 27 <!ELEMENT person (((dn?)* | (username? | password? | email? | 28first_name? | last_name?)*) | description? | 29 offline_password? |theme?)*> 30 <!ATTLIST person 31   id ID #IMPLIED 32   local (false |true) #IMPLIED 33   action CDATA #IMPLIED 34   subscribed_to_newsletter(true | false) #IMPLIED 35   using_accessible_ui (false | true) #IMPLIED36   subscribed_to_calendar_events (true | false) #IMPLIED 37  email_client (notes5 | notes6 | outlook | ical | other) 38 #IMPLIED39 > 40 <!ELEMENT group (((dn?)* | (username?)* | username?) | 41description?)*> 42 <!ATTLIST group 43   id ID #IMPLIED 44   local (false| true) #IMPLIED 45   action CDATA #IMPLIED 46 > 47 <!ELEMENT rooms(room*)*> 48 <!ELEMENT room (name? | access?)*> 49 <!ATTLIST room 50  id ID #IMPLIED 51   action CDATA #IMPLIED 52 > 53 <!ELEMENT access(managers? | authors? | readers?)*> 54 <!ELEMENT managers (member*)*> 55<!ELEMENT readers (member*)*> 56 <!ELEMENT authors (member*)*> 57<!ELEMENT members (person* | group*)*> 58 <!ELEMENT member (link?)*> 59<!ATTLIST member 60   action CDATA #IMPLIED 61 > 62 <!ELEMENT meta_dataANY> 63 <!ATTLIST meta_data 64   action CDATA #IMPLIED 65 > 66 <!ATTLISTlink 67   idref IDREF #REQUIRED 68 > 69 <!ELEMENT protocol (#PCDATA)> 70<!ELEMENT path_prefix (#PCDATA)> 71 <!ELEMENT port (#PCDATA)> 72<!ELEMENT hostname (#PCDATA)> 73 <!ELEMENT name (#PCDATA)> 74 <!ELEMENTpassword (#PCDATA)> 75 <!ELEMENT archive_directory (#PCDATA)> 76<!ELEMENT offline_password (#PCDATA)> 77 <!ELEMENT title (#PCDATA)> 78<!ELEMENT theme (#PCDATA)> 79 <!ELEMENT username (#PCDATA)> 80 <!ELEMENTdescription (#PCDATA)> 81 <!ELEMENT additional_information_url(#PCDATA)> 82 <!ELEMENT dn (#PCDATA)> 83 <!ELEMENT email (#PCDATA)> 84<!ELEMENT size (#PCDATA)> 85 <!ELEMENT lock_message (#PCDATA)> 86<!ELEMENT first_name (#PCDATA)> 87 <!ELEMENT last_name (#PCDATA)> 88<!ELEMENT last_accessed (#PCDATA)> 89 <!ELEMENT last_modified (#PCDATA)>90 <!ELEMENT link EMPTY>

[0059] In the DTD of Table 1,

[0060] UTF-8 is the character set

[0061] | represents logical “OR”

[0062] ? permits zero or one of the element

[0063] <!> are the comment delimiters

[0064] * permits zero or more of the element

[0065] + permits one or more of the element

[0066] #implied means optional

[0067] #required means required

[0068] dn is the a distinguished name

[0069] ui is a user interface

[0070] id is an identifier which is unique in the entire file

[0071] #PCDATA element may contain only parsed character data, and maynot contain child elements of any type

[0072] CDATA element can contain any string of text acceptable in awell-formed XML attribute value

XML API Engine

[0073] Referring to FIG. 7, in accordance with an exemplary embodimentof the invention based on the QuickPlace environment, XML API engine 76is built as follows.

[0074] In step 253, JAVA version 1.1.8 JDK is installed on your server101. JAVA 1.1.8 JDK can be downloaded from the Sun Microsystems™ website.

[0075] In step 254, the following files proved by QuickPlace Release 3are added to the CLASSPATH:

[0076] quickplace.jar

[0077] xercesimpl.jar

[0078] xalan.jar

[0079] log4j-118compat.jar

[0080] xml-apis.jar

[0081] In step 255, the following is added to the PATH environmentvariable if necessary.

[0082] JAVA JDK bin directory

[0083] Domino Server program directory

[0084] Server 101 is now set up to run a QuickPlace JAVA XML script 76.In this exemplary embodiment, although the use of the JAVA XML API 76does not require that the user write a JAVA program to run the XMLscripts, the interface for executing the scripts is written in JAVA,which is why the JAVA JDK and runtime environment are required on server101 on your machine.

[0085] In this exemplary embodiment, the entry point used to execute XMLscript on XML API engine 76 is:

[0086] QPAPI.process( )

[0087] The process( ) method is responsible for parsing and processingXML document 70 and executing the supported QuickPlace API actions itencounters. There are several variations of the process( ) method thatcan be used, as follows:

[0088] 1. process( String inFilename, String sessionFilename, StringoutFilename)

[0089] This entry point is called by QPAPI.main( ), and is the entrypoint that is called to execute the QPAPI JAVA class with arguments. Theparameters have the following meanings:

[0090] inFilename The pathname of the XML document 70 to be processed bythe QuickPlace JAVA XML API 76.

[0091] sessionFilename Used when executing XML search API actions.

[0092] outFilename The pathname of a file 72 to be created by QuickPlaceJAVA XML API 76 that will contained the processed output XML. Thisdocument 72 will be very similar to the input document 70 but will bemodified by the QuickPlace API 76 to show action status codes and outputresults of the specific actions if applicable.

[0093] 2. process( String inFilename)

[0094] When this method is used processing results and error statusesare formatted in the output file, and the user is not otherwise notifiedof their occurrence. The parameters have the following meanings:

[0095] inFilename The pathname of the XML document 70 to be processed bythe QuickPlace JAVA XML API 76.

[0096] 3. process( String inFilename, String outFilename)

[0097] This entry point is used when the user supplies XML input file 70and all processed output 87 is to be captured in an XML output file 72created by QuickPlace. The parameters have the following meanings:

[0098] inFilename The pathname of the XML document 70 to be processed bythe QuickPlace JAVA XML API 76.

[0099] outFilename The pathname of a file 72 to be created by theQuickPlace JAVA XML API 76 that will contain the processed output XML87. This document 72 will be very similar to the input document 70 butwill be modified by the QuickPlace API 76 to show action status codesand output results of the specific actions if applicable.

[0100] 4. process( Node session, Node root)

[0101] This entry point is used when the user has an XML DOM treeschema. It is primarily used in JAVA programs that build the XMLstructure on the fly. The parameters have the following meanings:

[0102] session The session Node. Normally, the session of the server 101is used when processing the XML document 70, and is required whenexecuting the XML search API actions.

[0103] root The root node of the XML DOM tree schema object. The rootnode is usually obtained from an XML parser in a JAVA application.

[0104] 5. process (Node root)

[0105] This entry point is used when you the user has an XML DOM treeschema. It is primarily used in JAVA programs that build the XMLstructure on the fly. The parameters have the following meanings:

[0106] root The root node of the XML DOM tree schema object. The rootnode is usually obtained from an XML parser in a JAVA application.

Running the QPAPI Executable JAVA Class

[0107] The QPAPI class may be used to process QuickPlace XML documentswithout writing JAVA code. This class accepts an XML document 70 asinput. Below is the syntax for executing an XML script against the QPAPIclass:

[0108] java com.lotus.quickplace.api.QPAPI -i myXMLScript.xml

[0109] The above is processed by a JAVA interpreter and theQPAPI.process( ) method is invoked to process the script. This requiresthat the JAVA runtime environment be installed on the users machinebecause it is responsible for executing the QPAPI class. Additionally,the QPAPI class may be executed with the following arguments:

[0110] -i inputfile.xml where inputfile.xml represents the name of theXML document 70 to be processed.

[0111] -o outputfile.xml where outputfile.xml represents the name of theXML output document 72 created by QuickPlace which contains all of theprocessed output and status codes.

[0112] -session file.xml where file.xml represents the name of thesession XML file that is used by QuickPlace to manage the user'ssession.

Executing QuickPlace XML From Within a JAVA Application

[0113] XML can also be generated programmatically and processed throughthe QPAPI.process( ). Table 5 is a sample JAVA code fragmentillustrating the necessary pieces needed to process the XML document.TABLE 5 SAMPLE JAVA CODE FOR PROCESSING XML DOCUMENT 1 importcom.lotus.quickplace.api.QPAPI; 2 class TestQPIAPI 3 { 4   static voidrun( ) 5   { 6     // this is called once for the process at 7      startup 8     QPAPI.init( ); 9     // build and get XML DOM treeschema for session 10       and XML action script. 11     // Theprogrammer provides the functionality to 12       build the XML properlyin the methods below 13     Node sessionXML = buildQPSessionXML( ); 14    Node root = buildQPXML( ); 15     // call this entry point toprocess using the 16       server session 17     QPAPI.process( root);18     // call this entry point to process using a user 19       session(only used when doing search places) 20     // all other actions ignorethe session. 21     QPAPI.process( sessionXML, root); 22     // this iscalled once for the process at 23       shutdown 24 25     QPAPI.term(); 26   } 27 }

[0114] In summary, the following components are used to execute XML fromwithin a JAVA program: ps 1. The QPAPI.init( ) method is called prior toany other QuickPlace processing.

[0115] 2. The programmer supplies functionality to properly constructthe XML document based upon the needs of the application

[0116] 3. The QPAPI.process( Node root) or other QPAPI.process( ) method(described earlier) is called to initiate the processing of thegenerated XML document. This method will process the entire document andperform all QuickPlace actions defined within it.

[0117] 4. The QPAPI.term( ) method is called to terminate the QuickPlaceprocessing and free up resources.

Object Model

[0118] Referring to FIG. 8, a high level object model representation ofan exemplary embodiment of the invention is presented. Each boxrepresents a unit that can be manipulated and used to retrieve and storedata. Each object has several associated methods.

[0119] QP service 100 represents the service. A service is an objectthat signifies a group of servers in an organization. There is oneinstance of a service 100 for any group of servers. Thus, a QuickPlaceservice is a multi-server deployment of QuickPlace servers that can betreated as a consistent unit of service for administration and in theuser interface.

[0120] A QuickPlace service comprises multiple QuickPlace servers and/orQuickPlace clusters, which: (1) are in the same IBM® Lotus® Domino™domain; (2) share the same user directory and authentication system; (3)are on the same user network (i.e., are not separated by a firewall);and (4) are administered by the same administration team.

[0121] These constraints are enough to ensure across the service that:(1) servers can be configured consistently; (2) servers can communicateand share data with each other; (3) user identities are in the same namespace and do not collide; and (4) single sign on authentication can beimplemented.

[0122] A QuickPlace cluster is treated as a single virtual server in theservice model.

[0123] Server 101 represents a physical or virtual server entity that isaddressable and may contain a group of places and place types.

[0124] Place 103 is an object that represents a place or project. Thisis the entry point into a particular project and all its data and allits manipulations—including logical methods such as lock, remove,member, and so forth.

[0125] QP members 104 represents members of place 114. There are manykinds of members, including person 115, local person 116, group 117 andlocal group 118. Members 104 are the seed of any membership operationdone in the place 103. Each member has an associated identity andprofile.

[0126] Room 105 represents a room 113 within a project 114.

[0127] In an exemplary embodiment, a project is a place, which iscontent and membership associated with that content.

[0128] A room 105 controls access to a subset of the data in the project114, including table of contents (TOC) 106, and folders 108.

[0129] TOC 106 represents the table of contents of a room 113, which iscomposed of many TOC entries 107, which TOC entry includes a url to acontent and the associated type (folder, room, document, etc.) of thatcontent.

[0130] Folder 108 contains many documents 109, and each room 113 cancontain many folders 108.

[0131] Documents 109 represent documents in a place 114.

[0132] Each place 114 may contain many themes 110. A theme is an objectthat represents how to lay out the user interface for this project, andhow to brand the user interface.

[0133] Layout 111 specifies one of the ways a theme 110 is laid out.Associated with each theme 110 there may be several layouts.

[0134] Session 112 is a session needed to work with this object model.It provides for associating an identity with any manipulation. Forexample, if when creating a place 114 on a server 119, session 112represents the identity of the individual. If that individual does nothave authorization to create a place 114, an error will be received.

[0135] Rooms 113 represent multiple rooms in a place 114.

[0136] Places 114 represents multiple places on a server 119.

[0137] Each object is able to represent itself as xml and recreateitself from the exported xml.

Service Object 100

[0138] Service object, or node, 100 represents a container for one ormore servers 119 that comprise the QuickPlace service. Servers that arepart of a service can be manipulated with the following actions:

[0139] query

[0140] getPlaces

[0141] getServers

[0142] search

[0143] <Query> queries QuickPlace service 100 for specific data. Byproviding a query capability at the service level, the administrator isable to retrieve specific information from one or more QuickPlaces 114that are part of the service 100. Table 6 gives the syntax for the queryaction. TABLE 3 QUERY ACTION SYNTAX 1 Syntax 1: 2 <serviceaction=“query”> 3   <query type=“get_member_places”> 4     <members> 5      <person> 6         . . . 7       </person> 8     </members> 9  </query> 10 </service> 11 Syntax 2: 12 <service action=“query”> 13  <query type=“ft_search”> 14     <query_string>properly formattedfull-text 15     query</ query_string > 16   </query> 17 </service>

[0144] The <query> action node supports the following attributes:

[0145] Attribute Name: type

[0146] Supported Values:

[0147] “get_member_places”

[0148] Specifies whether or not the server is local to the executing XMLscript. For the specific example embodiment based on QuickPlace 3.0, allservers specified in the XML document are considered to be local to theexecuting script so it is not necessary to specify this attribute.

[0149] get_member_places

[0150] Given a member name, retrieves all places of the service that thespecified name is a member of. Member places are listed by server nameand server names are listed by service which is essentially all serverslisted in the place catalog.

[0151] ft_search

[0152] Given a query string, retrieves all places in the Place Catalogthat satisfy the conditions specified in the query

[0153] For each of the above query types, the results of the query arereturned in the format of Table 7. TABLE 7 QUERY RESULTS SYNTAX<servers>   <server>     <place>     </place>   </server> </servers>

[0154] The getPlaces action retrieves all places listed in the placecatalog. Table 8 gives the syntax for the getplaces action. Places arelisted by server name. The results of the query are returned in theformat of Table 7. TABLE 5 GETPLACES ACTION SYNTAX <serviceaction=”getPlaces”> </service>

[0155] The getServers action retrieves all QuickPlace servers listed inthe place catalog. Places are listed by server name. The syntax for thisaction is:

[0156] Syntax: <service action=“getServers”>

[0157] The results of the getServers query are returned in the format ofTable 9. TABLE 6 GETSERVERS QUERY RESULTS SYNTAX 1 <servers> 2 <server>3 </server> 4 </servers>

[0158] The search action performs a “full-text” search across allQuickPlaces in the QuickPlace service. It returns an error action statusif the QuickPlace configuration specifies that Search Places is disabledor if Search Places for Anonymous Users is disabled and the identityperforming the search is anonymous. Table 10 sets forth the syntax andrequired XML for the search action. TABLE 7 SEARCH ACTION SYNTAX ANDREQUIRED XML 1 Syntax: 2   <service action=”search” order=”1 | 2 | 3”start=”n” 3   count=”n”> 4     <query> 5       “Properly formattedfull-text query string” 6     </query> 7 Required: 8   <serviceaction=“search”> 9     <query order=“1 | 2 | 3”> 10     “Properlyformatted full-text query string” 11     </query> 12   </service>

[0159] The criteria for the search are specified by the followingattributes:

[0160] Attribute Name: type

[0161] Supported Values:

[0162] order A numeric value that specifies the search return sortorder. The following values are supported:

[0163] 1 Return results sorted by relevance

[0164] 2 Return results sorted with oldest occurrences first

[0165] 3 Return results sorted with newest occurrences first

[0166] start Specifies the starting position of the search results to bereturned. A value of zero is used if this attribute is not specified. Astarting position of zero specifies that results starting with the firstmatch should be returned.

[0167] count Specifies the maximum number of search match hits to bereturned. A value of 15 is used if this attribute is not specified. Acount of −1 specifies that the maximum number of hits should bereturned.

Server Object 101

[0168] Server node 101 represents an installed QuickPlace server in theQuickPlace service 100. All actions performed on a QuickPlace server areexecuted from within the server node hierarchy. In the QuickPlace 3.0release embodiment actions on performed only on the local server wherethe XML script 76 is executing. To perform actions on other servers inthe service, the XML script is executed on each of the other servers.The server node supports the following actions:

[0169] getPlaceTypes

[0170] getPlaces

[0171] refreshPlaces

[0172] forceRefreshPlaces

[0173] upgradeAllPlacesAndPlaceTypes

[0174] forceUpgradeAllPlacesAndPlaceTypes

[0175] upgrade

[0176] forceupgrade

Server Node Attributes

[0177] The server node supports the following attribute:

[0178] Attribute Name: local

[0179] Syntax: <server local=“true”></server>

[0180] Supported Values: “true”|“false”

[0181] Specifies whether or not the server is local to the executing XMLscript. For the QuickPlace 3.0 release, all servers specified in the XMLdocument are considered to be local to the executing script so it is notnecessary to specify this attribute. This may change in a futurerelease.

Server Node Named Elements

[0182] The server node supports the following named elements:

[0183] <name>

[0184] <hostname>

[0185] <port>

[0186] <url_prefix>

[0187] The <name> element is used by the server node to specify the nameof the server. The full canonical name or the abbreviated name of theDomino Server that this script is executing against may be specified.The name used is the name of the local Domino Server in which thisscript executes against. Syntax of the <name> element is set forth inTable 11. The <name> element is required if <local=“true”> attribute isnot specified or equals “false”. TABLE 8 SYNTAX OF NAME ELEMENT 1<server> 2   <name>QPServer/ACME</name> 3 </server>

[0188] The <hostname> element is used by the server node to specify thehost name that the script executes against. The name used should be anIP address or DNS resolvable host name. Syntax of the <hostname> elementis set forth in Table 12. The <hostname> element is required if the<local=“true”> attribute is not specified or equals “false”. TABLE 12SYNTAX OF HOSTNAME ELEMENT <server>   <hostname>qpserver.acme.com</hostname> </server>

[0189] The <port> element, which is optional, is used by the server nodeto specify the listening port of the server against which the script isexecuting. The syntax of the <port> element is set forth in Table 13.TABLE 13 SYNTAX OF THE PORT ELEMENT <server>    <port>80</port></server>

[0190] The optional <curl_prefix> element is used by the server node tospecify the URL prefix to the hostname of the server executing thescript. Its syntax is set forth in Table 14. TABLE 14 URL_PREFIX ELEMENTSYNTAX <server>    <url_prefix>http://</url_prefix> </server>

Server Node Actions

[0191] The <server> node supports the following named actions:

[0192] getPlacesTypes

[0193] getPlaces

[0194] forceRefreshPlaces

[0195] refreshplaces

[0196] forceUpgradeAllPlacesAndPlaceTypes

[0197] upgradeAllPlacesAndPlaceTypes

[0198] forceupgrade

[0199] upgrade

[0200] getPlaceTypes retrieves all placetypes that exist on thespecified server. The “standard” QP PlaceType is h_StdPlaceType.Placetypes are listed by server name. The syntax for getPlaceTypes is:

[0201] <server action=“getPlaceTypes”>

[0202] </server>

[0203] The results of the action are returned in the format of Table 15.TABLE 15 GETPLACETYPES RESULTS FORMAT <server>    <placetypes>      <placetype>          <placetype id=“8912471890219238”>         <name>ACMETeamPlacetype</name>          <description>The ACMETeam's          Placetype</description>         <additional_information_url>            http://www.acme.com/acmeteaminfo         </additional_information_url>       </placetype>       . . .   </placetypes> </server>

[0204] getPlaces retrieves all places that exist on the specifiedserver. Places are listed by server name.

[0205] forceRefreshPlaces refreshes all places on the specified serverfrom their respective placetypes. The refresh action occurs immediately.No action is performed if a place does not adhere to a placetype.

[0206] refreshPlaces refreshes all places on the specified server fromtheir respective placetypes. The refresh action occurs at the nextscheduled interval when the QuickPlace nightly maintenance process isrun on the server. No action is performed if a place does not adhere toa placetype.

[0207] forceUpgradeAllPlacesAndPlaceTypes upgrades all places andplacetypes on the specified server from a previous QuickPlace release.This action occurs immediately. The upgrade process involves refreshingthe design of QuickPlace system files as well as the schema and designof user QuickPlaces. This action will forcibly invoke the upgradeprocess even if the places and placetypes on the server have alreadybeen upgraded.

[0208] upgradeAllPlacesAndPlaceTypes upgrades all places and placetypeson the specified server from a previous QuickPlace release. This actionoccurs immediately. If the server has already been upgraded then thisaction will have no effect. The upgrade process involves refreshing thedesign of QuickPlace system files as well as the schema and design ofuser QuickPlaces. This action will no effect if the places andplacetypes on the server have already been upgraded.

[0209] forceupgrade upgrades the specified QuickPlace server from aprevious release. This action occurs immediately. All core QuickPlacefiles are upgraded as well as the admin place if installed on theserver. This action will forcibly invoke the upgrade process even if theserver has already been upgraded.

[0210] upgrade upgrades the specified QuickPlace server from a previousrelease. This action occurs immediately. All core QuickPlace files areupgraded as well as the admin place if installed on the server. If theserver has already been upgraded then this action will have no effect.

Place Object 103

[0211] Place node 103 represents a QuickPlace on the QuickPlace server101 in the QuickPlace service 100. All actions performed on a place areexecuted from within the server node hierarchy.

[0212] The place node supports the following named elements:

[0213] <name>

[0214] <placetype>

[0215] The <name> element is required for all supported place actions(create, remove, etc.) It is used by the place node to specify the nameof the place being serviced. This name refers to a place on the localserver executing the script.

[0216] The <placetype> element is used by the place node to specify theplacetype that is associated with the place being serviced. Theplacetype element is primarily used when creating and refreshing places.When performing operations involving a placetype, the user mustpreviously define the place and assign it an idref id with the <link>element. The placetype is then referenced by the idref value later on inthe script.

[0217] Place node 103 supports the following actions:

[0218] create

[0219] remove

[0220] forceRemove

[0221] update

[0222] lock

[0223] unlock

[0224] repair

[0225] refresh

[0226] forceRefresh

[0227] archive

[0228] registerInPlaceCatalog

[0229] unregisterInPlaceCatalog

[0230] register

[0231] unregister

[0232] changeHierarchy

[0233] sendDailyNewsLetter

[0234] sendWeeklyNewsLetter

[0235] sendMailToMembers

[0236] sendMailToManagersonly

[0237] upgrade

[0238] forceupgrade

PlaceType Object 102

[0239] PlaceType node 102 represents a QuickPlace placetype on theQuickPlace server 101 in the QuickPlace service 100. All actionsperformed on a placetype are executed from within the server nodehierarchy.

[0240] The placetype node supports the following named element:

[0241] <name>

[0242] which is required for all supported placetype actions. The <name>element is used by the <placetype> node to specify the name of theplacetype being serviced. This name refers to a placetype on the localserver executing the script.

[0243] Placetype supports the following actions:

[0244] refresh

[0245] forceRefresh

[0246] refreshChildPlaces

[0247] forceRefreshChildPlaces

[0248] upgrade

[0249] forceupgrade

[0250] remove

[0251] forceRemove

[0252] The refresh action refreshes the placetype specified by <name> onthe server specified by <server>. If the placetype has already beenrefreshed then the operation will not occur. TABLE 16 REFRESH ACTIONEXAMPLE <service><servers>    <server local=“true”>       <placetypeaction=“refresh”>          <name>AcmeTeamPlaceType</name>      </placetype>    </server> </servers></service>

[0253] The forceRefresh action refreshes the placetype specified by<name> on the server specified by <server>. If the placetype has alreadybeen refreshed then this action will force a refresh of the placetype.Table 17 provides an example. TABLE 17 FORCEREFRESH ACTION EXAMPLE<service><servers>    <server local=“true”>       <placetypeaction=“forceRefresh”>          <name>AcmeTeamPlaceType</name>      </placetype>    </server> </servers></service>

[0254] The refreshChildPlaces action refreshes the all derived childrenof the placetype specified by <name> on the server specified by<server>. If the child placetypes have already been refreshed then theoperation will not occur. Table 18 is an example. TABLE 18REFRESHCHILDPLACES ACTION EXAMPLE <service><servers>    <serverlocal=“true”>       <placetype action=“refreshChildPlaces”>         <name>AcmeTeamPlaceType</name>       </placetype>    </server></servers></service>

[0255] The forceRefreshChildPlaces action refreshes the all derivedchildren of the placetype specified by <name> on the server specified by<server>. If the child placetypes have already been refreshed thenrefresh will occur regardless. Table 19 is an example. TABLE 19FORCEREFRESHCHILDPLACES ACTION EXAMPLE <service><servers>    <serverlocal=“true”>       <placetype action=“forceRefreshChildPlaces”>         <name>AcmeTeamPlaceType</name>       </placetype>    </server></servers></service>

[0256] The remove action removes the specified placetype from thespecified server. Removal of the placetype is performed when theQuickPlace Nightly maintenance process runs on the server. Table 20 isan example. TABLE 20 REMOVE ACTION EXAMPLE <service><servers>   <serverlocal=“true”>     <placetype action=“remove”>      <name>AcmeTeamPlaceType</name>     </placetype>   </server></servers></service>

[0257] The forceRemove action removes the specified placetype from thespecified server. Removal of the placetype is performed immediately.

[0258] The upgrade action upgrades the specified placetype on thespecified server from a previous version of QuickPlace. This actionoccurs immediately. The specified placetype is locked during the upgradeprocess. If the specified placetype has already been upgraded then thisaction will have no effect.

[0259] The forceUpgrade action upgrades the specified placetype on thespecified server from a previous version of QuickPlace. This actionoccurs immediately. The specified placetype is locked during the upgradeprocess. If the specified placetype has already been upgraded then thisaction will force another upgrade of the placetype regardless.

Person Object 115

[0260] Person node 115 represents a person on the QuickPlace server 101in the QuickPlace service 100.

[0261] The <person> node 115 supports the following attributes:

[0262] local

[0263] subscribed_to_newsletter

[0264] subscribed_to_calendar_events

[0265] using_accessible_ui

[0266] email_client

[0267] The local attribute specifies whether or not the person is localto the specified place XML script. A value of “true” indicates that theperson exists only in the specified place. A value of “false” indicatesthat the person exists externally to the specified place.

[0268] The subscribed_to_newsletter attribute specifies whether or notthe person subscribed to the place's newsletter.

[0269] The subscribed_to_calender_events attribute specifies whether ornot the person subscribed to the calendar events in the specified place.

[0270] The using_accessible_ui attribute specifies whether or not theperson is using an accessibility user interface in the specified place.

[0271] The email_client attribute specifies which email client theperson uses.

Person Node Named Elements

[0272] The person node supports the following named elements:

[0273] <dn>

[0274] <username>

[0275] <first_name>

[0276] <last_name>

[0277] <password>

[0278] <phone_number>

[0279] <offline_password>

[0280] <description>

[0281] <email>

[0282] <theme>

[0283] The <dn> element is required for all supported place actions(create, remove, etc.) if operating on an external user. It is used bythe person node to specify the external name of the person beingserviced. This name refers to a person in a directory external toQuickPlace. This element is not specified when operating on a personthat is local to the specified place

[0284] The <username> element is used by the person node to specify theperson that is associated with the operation being performed. The valuespecified by this element represents a local user of the specifiedplace. A local user is one that exists purely in the place and not in anexternal entity such as a directory. To specify an external user thenthe <dn> element described above is used.

[0285] The <password> element requires that the person attributelocal=“true” be specified. The <password> element is used by the personnode to specify the password of the person that is associated with theoperation being performed. The value specified by this elementrepresents the password of a local user of the specified place. Thispassword will be required when the specified user authenticates with theplace. This element is not applicable when the <dn> element isspecified.

[0286] The <offline_password> element is used by the person node tospecify the offline password of the person that is associated with theoperation being performed. This password is used when the personauthenticates with the place in offline mode. The value specified bythis element can be used with either a local person or an externalperson.

[0287] The <theme> element is used by the person node to specify thename of the theme, or skin, associated with the operation beingperformed. The value specified by this element can be used with either alocal person or an external person.

Person Node Actions

[0288] Person node 115 supports the following actions:

[0289] add

[0290] remove

[0291] update

[0292] rename

[0293] The add action adds a person to the specified place. The personmay exist locally to the place or may exist externally to the place inan external directory depending upon which attribute you specify for theperson (see above). When adding an external person to a place, theexternal directory is not consulted for existence or name correctness.You can specify any supported attributes or elements of the person whenthe add action is performed since the specified person is updatedimmediately following this add operation.

[0294] The add action is performed to initially add a person to thespecified place but it does not give that person any rights to accesselements of the place. That action is performed by the <member> node.Table 21 illustrates an example of the add action. TABLE 21 EXAMPLEPERSON NODE ADD ACTION <service>    <servers>       <server>         <name>QPServer/ACME</name>         <hostname>qp.acme.com</hostname>          <port>80</port>         <places>             <place>               <name>ACME_Team</name>                <members>                  <person local=“true”                   action=“add”>                     <username>Jane                      Doe</username>                     <password>BigSecret                     </password>                      <first_name>Jane                     </first_name>                      <last_name>Doe                     </last_name>                </person>               <person action=“add”>                   <dn>cn=CharlesBrown, ou=                   Sales, o=ACME </dn>               </person>                </members>             </place>         </places>       </server>    </servers> </service>

[0295] The remove action removes a person from the specified place. Theperson may exist locally to the place or may exist externally to theplace in an external directory depending upon which attribute youspecify for the person (see above). Removing a local person removes thatperson from the specified place. Removing an external person removesthat person the place but the external directory.

[0296] When a person is removed from a place, his membership to allrooms in the place is also removed.

[0297] The update action updates a person in the specified place. Whenthis action is called, the specified person is updated using theattributes and values specified. Any supported attributes or elements ofthe person may be specified when the update action is performed. Noupdates are performed in the external directory if the person beingupdated is not local.

[0298] The rename action renames a person in the specified place. Whenthis action is called, the specified person name is updated to the valuespecified. All other attributes of the person remain the same after therename process. The person information in the external directory is notupdated by this action. That must be done in a separate process outsideof this script.

Group Object 117

[0299] Group (external) node 117 represents a group on the QuickPlaceserver 101 in the QuickPlace service 100. All actions performed on agroup are executed from within the place node hierarchy. Groupoperations are performed on groups that have identities in externaldirectories. (Local groups 118 are groups that exist purely in theplace.) Group 117 supports the following actions:

[0300] add

[0301] remove

[0302] update

[0303] rename

Member Object 104

[0304] Member node 104 (inside room managers, readers and authors)represents a member of one or more rooms 113 in a specified place 114 onQuickPlace server 119 in QuickPlace service 100. All actions performedon a member 104 are executed from within the <room> node hierarchy 113.The member node 104 is primarily used to define, modify, or removemembership access to one or more rooms in the place 114. When performingactions on a member, a person 115, 116 or group 117, 118 that representsthe member must have been previously defined in the script. Operationson a member node 104 are performed using an idref link to the person orgroup nodes previously defined in the script. An idref link relationshipis illustrated in Table 22. Member 104 supports add, remove, and renameactions. TABLE 22 IDREF LINK RELATIONSHIP ILLUSTRATION <members>   <person local=“true” id=“person1”>       <username>jdoe</username>   </person>    <person id=“person2”>       <dn>cn=CharlesBrown,ou=Sales,o=ACME</dn>    </person> </members> <rooms>    <room>      <name>Main.nsf</name>          <access>             <managers>               <member action=“add”>                   <linkidref=“person1”/>                </member>             </managers>            <authors>                <member action=“remove”>                  <link idref=“person2”/>                </member>            </authors>          </access>    </room> </rooms>

[0305] The <person> node is defined first with a corresponding link IDvalue. That ID value if referenced through the <link idref> element todetermine which <person> the <member> node should operate on.

[0306] The major distinction between a <person> or <group> and a<member> is that a <person> or <group> represents an entity that theplace has information about. A <member> represents a <person> or <group>node's access or membership to a particular room.

Alternative Embodiments

[0307] It will be appreciated that, although specific embodiments of theinvention have been described herein for purposes of illustration,various modifications may be made without departing from the spirit andscope of the invention. In particular, it is within the scope of theinvention to provide a computer program product or program element, or aprogram storage or memory device such as a solid or fluid transmissionmedium, magnetic or optical wire, tape or disc, or the like, for storingsignals readable by a machine, for controlling the operation of acomputer according to the method of the invention and/or to structureits components in accordance with the system of the invention.

[0308] Further, each step of the method may be executed on any generalcomputer, such as IBM Systems designated as zSeries, iSeries, xSeries,and pSeries, or the like and pursuant to one or more, or a part of oneor more, program elements, modules or objects generated from anyprogramming language, such as C++, Java, Pl/1, Fortran or the like. Andstill further, each said step, or a file or object or the likeimplementing each said step, may be executed by special purpose hardwareor a circuit module designed for that purpose.

[0309] Accordingly, the scope of protection of this invention is limitedonly by the following claims and their equivalents.

We claim:
 1. Method for hierarchically invoking reentrant methods onobjects, comprising: associating with each object an action attributerepresenting an API to be invoked; processing said object to return anupdated form of said object, said processing selectively including anaction executed on said object; for said actions executed on saidobject, creating a child node with action status representing whethersaid action was successful; and on action success, removing said actionattribute from said updated form.
 2. The method of claim 1, said objectsbeing API capable XML objects.
 3. Method for hierarchically invokingreentrant methods on XML objects in a document, comprising: traversingan XML input tree in sequential order as said objects appear in saiddocument; upon traversing in said input tree a target object with anaction attribute, adding an action result object to said tree as a childobject to said target object; if an error is encountered in processingsaid action attribute in a target object during traversal, retainingsaid action attribute in said target object and processing a nextsibling object in said sequential order without processing any childrenobjects of said target object; and if an action attribute in a targetobject is successfully processed during said traversal, removing saidaction attribute from said target object and processing a next object insaid sequential order.
 4. The method of claim 3, further comprising:generating an XML resultant tree comprising said input XML tree withaction result child objects added to each action object and actionattributes removed from said action objects successfully processed. 5.The method of claim 4, further comprising: correcting target objectshaving result action objects indicating error an action attributes toproduce a corrected XML resultant tree; processing said corrected XMLresultant tree as a new XML input tree.
 6. The method of claim 4, saidobjects comprising an object model including service objects, serverobjects, place objects, room objects, folder objects and documentobjects.
 7. The method of claim 4, further comprising: generating tosaid XML resultant tree new script resulting from processing selectiveaction attributes; and responsive to said XML resultant tree includingan error action result child object or said new script, processing saidXML resultant tree as a new input tree to generate a reentrant XMLresultant tree.
 8. System for hierarchically invoking reentrant methodson XML objects, comprising: a first store for storing said XML objectsas an input tree; a second store for storing a resultant tree; aprocessor for processing said input tree to generate said resultanttree; action attribute indicia representing an API to be invokedassociated with at least one said object; said processor executing adepth first search through said input tree for generating said resultanttree selectively including action status child nodes for XML objectshaving an action attribute and new script generated from processingselective action attributes; while generating said resultant tree, saidprocessor removing said action attribute from XML action objectssuccessfully processed; and a reentrant processing path through saidprocessor for processing said resultant tree as a new input treeresponsive to said resultant tree including said new script or failurestatus child nodes.
 9. A program storage device readable by a machine,tangibly embodying a program of instructions executable by a machine toperform method steps for hierarchically invoking reentrant methods onXML objects, said method comprising: associating with each object anaction attribute representing an API to be invoked; processing saidobject to return an updated form of said object, said processingselectively including an action executed on said object; for saidactions executed on said object, creating a child node with actionstatus representing whether said action was successful; and on actionsuccess, removing said action attribute from said updated form.
 10. Aprogram storage device readable by a machine, tangibly embodying aprogram of instructions executable by a machine to perform method stepsfor hierarchically invoking reentrant methods on XML objects, saidmethod comprising: traversing an XML input tree in sequential order assaid objects appear in said document; upon traversing in said input treea target object with an action attribute, adding an action result objectto said tree as a child object to said target object; if an error isencountered in processing said action attribute in a target objectduring traversal, retaining said action attribute in said target objectand processing a next sibling object in said sequential order withoutprocessing any children objects of said target object; and if an actionattribute in a target object is successfully processed during saidtraversal, removing said action attribute from said target object andprocessing a next object in said sequential order.
 11. The programstorage device of claim 10, said method further comprising: generatingan XML resultant tree comprising said input XML tree with action resultchild objects added to each action object and action attributes removedfrom said action objects successfully processed.
 12. The program storagedevice of claim 11, said method further comprising: correcting targetobjects having result action objects indicating error an actionattributes to produce a corrected XML resultant tree; processing saidcorrected XML resultant tree as a new XML input tree.
 13. The programstorage device of claim 11, said objects comprising an object modelincluding service objects, server objects, place objects, room objects,folder objects and document objects.
 14. A computer program product forhierarchically invoking reentrant methods on XML objects according tothe method comprising: associating with each object an action attributerepresenting an API to be invoked; processing said object to return anupdated form of said object, said processing selectively including anaction executed on said object; for said actions executed on saidobject, creating a child node with action status representing whethersaid action was successful; and on action success, removing said actionattribute from said updated form.